package leetcode; /**
 * description:
 * author:张腾
 * date:2021-06-17
 */

/**
 * 给定一个二叉树，判断其是否是一个有效的二叉搜索树。
 *
 * 假设一个二叉搜索树具有如下特征：
 *
 * 节点的左子树只包含小于当前节点的数。
 * 节点的右子树只包含大于当前节点的数。
 * 所有左子树和右子树自身必须也是二叉搜索树。
 */
//利用中序遍历 若是二叉搜索树则中序遍历为严格的升序
public class leetcode98 {

    long pre = Long.MIN_VALUE;
    public boolean isValidBST(TreeNode root) {
        if (root==null) return true;

        if (!isValidBST(root.left)) return false;

        if (root.val<=pre) return false;

        pre = root.val;
        return isValidBST(root.right);
    }

}
